package com.wyk.project.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wyk.project.dao.entity.ShortLinkDO;
import com.wyk.project.dto.biz.ShortLinkStatsRecordDTO;
import com.wyk.project.dto.req.ShortLinkBatchCreateReqDTO;
import com.wyk.project.dto.req.ShortLinkCreateReqDTO;
import com.wyk.project.dto.req.ShortLinkPageReqDTO;
import com.wyk.project.dto.req.ShortLinkUpdateReqDTO;
import com.wyk.project.dto.resp.ShortLinkBatchCreateRespDTO;
import com.wyk.project.dto.resp.ShortLinkCountQuerRespDTO;
import com.wyk.project.dto.resp.ShortLinkCreateRespDTO;
import com.wyk.project.dto.resp.ShortLinkPageRespDTO;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;

import java.util.List;

public interface ShortLinkService extends IService<ShortLinkDO> {

    /**
     * 创建短连接
     * @param shortLinkCreateReqDTO
     * @return
     */
    ShortLinkCreateRespDTO createShortLink(ShortLinkCreateReqDTO shortLinkCreateReqDTO);

    /**
     * 分页查询短连接
     * @param shortLinkPageReqDTO
     * @return
     */
    IPage<ShortLinkPageRespDTO> pageshortLink(ShortLinkPageReqDTO shortLinkPageReqDTO);

    /**
     * 查询短链接分组内数量
     * @return
     */
    List<ShortLinkCountQuerRespDTO> listGroupShortLinkCount(List<String> requestParam);

    /**
     * 修改短链接
     * @param shortLinkUpdateReqDTO
     */
    void updateShortLink(ShortLinkUpdateReqDTO shortLinkUpdateReqDTO);

    /**
     * 短连接跳转
     * @param shortUri
     * @param request
     * @param response
     */
    void restoreUrl(String shortUri, ServletRequest request, ServletResponse response);


    /**
     * 短链接统计
     *
     * @param shortLinkStatsRecord         完整短链接
     */
    void shortLinkStats(ShortLinkStatsRecordDTO shortLinkStatsRecord);

    /**
     * 批量创建短链接
     * @param requestParam
     * @return
     */
    ShortLinkBatchCreateRespDTO batchCreateShortLink(ShortLinkBatchCreateReqDTO requestParam);
}
